package main

import (
	"Squid/config"
	"Squid/modules/crontab/master"
	"Squid/routers"
	"flag"
	"fmt"
	"github.com/labstack/echo/v4"
	"os"
	"runtime"
)

var (
	confFile string //配置文件路径
	confMasterFile string //master配置
	dirCurrent string
)

//解析命令行参数
func initArgs() {

	dirCurrent, _ = os.Getwd()
	//main -config ./config.json -xxx 123 -yyy 456
	flag.StringVar(&confFile, "config", "./config/config.json", "指定config.json")


	confMasterFile = dirCurrent + "/modules/crontab/master/master.json"
	flag.Parse()
}

//初始化线程
func initEnv() {
	runtime.GOMAXPROCS(runtime.NumCPU())
}

func main() {
	var (
		e        *echo.Echo
		jobRoute *echo.Group
		err 	error
	)

	e = echo.New()

	//初始化命令行
	initArgs()

	//初始化线程
	initEnv()


	//加载配置
	if err = config.InitConfig(confFile); err != nil {
		fmt.Println("加载配置文件错误:",err.Error())
		panic(err)
	}

	// 加载master配置
	if err = master.InitConfig(confMasterFile); err != nil {
		panic(err)
	}
	//  任务管理器
	if err = master.InitJobMgr(); err != nil {
		panic(err)
	}

	// 初始化服务发现模块
	if err = master.InitWorkerMgr(); err != nil {
		fmt.Println("服务发现获取失败:", err.Error())
	}


	jobRoute = e.Group("job")
	if err = routers.JobGroupRoute(jobRoute); err != nil {
		panic(err)
	}

	e.Logger.Fatal(e.Start(":8080"))
}
